#include "stdafx.h"
//#include "StringObject.h"
#include "DL_Debug.h"

namespace DL_Debug
{
	namespace Debug
	{
		void Create(const OS::FileFlags &someFlags)
		{
			Utils::Debug::Debug::GetInstance(someFlags);
		}
		void Create(const std::string aFilename, const OS::FileFlags &someFlags)
		{
			Utils::Debug::Debug::DebugLogFilename = aFilename;
			Utils::Debug::Debug::GetInstance(someFlags);
		}
		Utils::Debug::Debug *GetInstance()
		{
			return Utils::Debug::Debug::GetInstance();
		}
		void Assert(const std::string aFile, const int &aLine, const std::string aFunction, const std::string aMessage)
		{
			Utils::Debug::Debug::Assert(Utils::Debug::DebugError, false, aFile, aLine, aFunction, aMessage);
		}

		void Log(const Utils::Debug::DebugLevel &aDebugLevel, const std::string aMessage)
		{
			Utils::Debug::Debug::Log(aDebugLevel, aMessage);
		}

		void Log(const Utils::Debug::DebugLevel &aDebugLevel, const std::string aFile, const int &aLine, const std::string aFunction, const std::string aMessage)
		{
			Utils::Debug::Debug::Log(aDebugLevel, aFile, aLine, aFunction, aMessage);
		}

// 		void Log(const Utils::Debug::DebugLevel &aDebugLevel, const std::string aMessage, const double &aDouble)
// 		{
// 			Utils::Debug::Log(aDebugLevel, (Utils::String(aMessage)<<aDouble).c_str());
// 		}
// 
// 		void Log(const Utils::Debug::DebugLevel &aDebugLevel, const std::string aFile, const int &aLine, const std::string aFunction, const std::string aMessage, const double &aDouble)
// 		{
// 			Utils::Debug::Log(aDebugLevel, aFile, aLine, aFunction, (Utils::String(aMessage)<<aDouble).c_str());
// 		}

		void SetDebugLevel(const Utils::Debug::DebugLevel &aDebugLevel)
		{
			Utils::Debug::Debug::GetInstance()->SetDebugLevel(aDebugLevel);
		}
	};

	Utils::Debug::Debug *GetDebugInstance()
	{
		return Utils::Debug::Debug::GetInstance();
	}

};
